package com.study.reference;

import java.lang.ref.SoftReference;

/**
 * @Author HBZ
 * @Date 2020/9/12 22:31
 * @Description 软引用适合用作缓存
 */
public class T2_SoftReference {
    public static void main(String[] args) {
        SoftReference<byte[]> m = new SoftReference<>(new byte[1024 * 1024 * 10]);
        System.out.println(m.get());
        System.gc();
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(m.get());
        // 再分配一个数组，heap将装不下，这时候系统会gc，先回收一次，如果不够，会把软引用回收掉
        //设置堆内存最大为20M： -Xmx20M
        byte[] b = new byte[1024 * 1024 * 10];
        System.out.println(m.get());
    }
}
